home *** CD-ROM | disk | FTP | other *** search
/ 100 Plus Great Games 2 / 100PLUSV2.BIN / games / Darts(Shanghai).dxr / Internal_2_throw darts.ls < prev    next >
Encoding:
Text File  |  2002-01-25  |  5.2 KB  |  180 lines

  1. property spriteNum, pDart, pLoc, pDistanceFromBoard, pBoardHeightFromGround, pPower, pDeterMinePower, pGravity, pair, pDiffer, pScale, pHeightOfDart, pOgHeight, pOgWidth, pFollow, hateV, hateH, myOloc, myOh, myOv, myOr
  2. global gDartCount, gEnableGrab, gEnablethrow, gIB, gBscreen, gDartPoint, gTargets, gCRBox, gDartButtons, gRound, gCurrentScore, gRoundScore, gCSBox, gRSBox, gDartScore, pseudoList, gDartList
  3.  
  4. on beginSprite me
  5.   gDartList.add(spriteNum)
  6.   myOloc = sprite(spriteNum).loc
  7.   myOh = sprite(spriteNum).height
  8.   myOv = sprite(spriteNum).width
  9.   myOr = sprite(spriteNum).rotation
  10. end
  11.  
  12. on cleanUp me
  13.   sprite(spriteNum).loc = myOloc
  14.   sprite(spriteNum).height = myOh
  15.   sprite(spriteNum).width = myOv
  16.   sprite(spriteNum).rotation = myOr
  17. end
  18.  
  19. on init me
  20.   pDart = sprite(spriteNum)
  21.   pDistanceFromBoard = 96
  22.   pBoardHeightFromGround = 68
  23.   pGravity = 0.59999999999999998
  24.   pHeightOfDart = 28
  25.   pOgHeight = pDart.height
  26.   pOgWidth = pDart.width
  27.   pFollow = timeout("follow").new(1, #followMouse, me)
  28.   pair = VOID
  29. end
  30.  
  31. on followMouse me
  32.   if (the mouseH >= 0) and (the mouseH <= (the stage).rect.width) and ((the mouseV >= 250) and (the mouseV <= (the stage).rect.height)) then
  33.     pDart.loc = the mouseLoc
  34.   else
  35.     pDart.locH = the mouseH
  36.   end if
  37. end
  38.  
  39. on mouseDown me
  40.   if voidp(pair) and (pDistanceFromBoard > 0) then
  41.     gEnablethrow = 1
  42.     pFollow.forget()
  43.     pLoc = []
  44.     pLoc[1] = pDart.locH
  45.     pLoc[2] = pDart.locV
  46.     pDistanceFromBoard = 96
  47.     pHeightOfDart = 28
  48.     pDeterMinePower = timeout("power" & string(spriteNum)).new(5, #buildPower, me)
  49.   end if
  50. end
  51.  
  52. on mouseUp me
  53.   if gEnablethrow and (pDistanceFromBoard > 0) then
  54.     puppetSound(4, member("throw dart"))
  55.     gEnablethrow = 0
  56.     hateH = the mouseH
  57.     hateV = the mouseV
  58.     pDartsCount = pDartsCount + 1
  59.     pDeterMinePower.forget()
  60.     buildPower()
  61.     pair = timeout("pAir" & string(spriteNum)).new(5, #thrown, me)
  62.   end if
  63. end
  64.  
  65. on mouseUpOutSide me
  66.   if gEnablethrow and (pDistanceFromBoard > 0) then
  67.     puppetSound(4, member("throw dart"))
  68.     gEnablethrow = 0
  69.     hateH = the mouseH
  70.     hateV = the mouseV
  71.     pDartsCount = pDartsCount + 1
  72.     pDeterMinePower.forget()
  73.     buildPower()
  74.     pair = timeout("pAir" & string(spriteNum)).new(10, #thrown, me)
  75.   end if
  76. end
  77.  
  78. on buildPower me
  79.   pPower = -((float(hateV) - pLoc[2]) * 0.17999999999999999) * 0.72999999999999998
  80.   pDiffer = -((float(hateH) - pLoc[1]) * 0.17999999999999999) * 0.72999999999999998
  81.   if pPower < 10 then
  82.     pPower = 10
  83.   end if
  84.   if pPower > 22 then
  85.     pPower = 22
  86.   end if
  87. end
  88.  
  89. on thrown me
  90.   pDart.height = pDart.height - 3.54000000000000004
  91.   pDart.width = pDart.width - 3.54000000000000004
  92.   pDart.rotation = pDart.rotation + (pPower * 1.30000000000000004)
  93.   pPower = pPower - pGravity
  94.   pDistanceFromBoard = float(pDistanceFromBoard) - 2.5
  95.   pHeightOfDart = pHeightOfDart + pPower
  96.   pLoc[2] = pLoc[2] - pPower
  97.   pLoc[1] = pLoc[1] - pDiffer
  98.   pDart.locV = pLoc[2]
  99.   pDart.locH = pLoc[1]
  100.   pLoc[2] = pDart.locV
  101.   pLoc[1] = pDart.locH
  102.   if pDistanceFromBoard <= 0 then
  103.     if pDart.locV < 440 then
  104.       og = [290.0, 220.0]
  105.       pd = [pDart.locH.float, pDart.locV.float]
  106.       vec = [pd[1] - og[1], pd[2] - og[2]]
  107.       veclen = sqrt((vec[1] * vec[1]) + (vec[2] * vec[2]))
  108.       if veclen > 190 then
  109.         puppetSound(4, member("dart hit"))
  110.       else
  111.         puppetSound(4, member("dart hit 2"))
  112.       end if
  113.     else
  114.       puppetSound(4, member("hit floor"))
  115.     end if
  116.     pair.forget()
  117.     gDartPoint.loc = pDart.loc
  118.     repeat with i = 1 to gTargets.count
  119.       updateStage()
  120.       if sprite(gTargets[i]).pSector = gRound then
  121.         if gDartPoint.intersects(gTargets[i]) then
  122.           gCurrentScore = gCurrentScore + sprite(gTargets[i]).returnPoints()
  123.           gCSBox.text = string(gCurrentScore)
  124.           gRoundScore[gRound] = string(gRoundScore[gRound] + sprite(gTargets[i]).returnPoints())
  125.           gRSBox[gRound].text = string(gRoundScore[gRound])
  126.           gDartScore[gDartCount] = string(sprite(gTargets[i]).returnPoints())
  127.         end if
  128.       end if
  129.     end repeat
  130.     member("dart" && string(gDartCount)).text = string(gDartScore[gDartCount])
  131.     gEnableGrab = 1
  132.     if gDartCount = 3 then
  133.       if (gDartScore[1] = 25) and (gDartScore[2] = 50) and (gDartScore[3] = 75) then
  134.         gRoundScore[gRound] = gRoundScore[gRound] + 100
  135.       end if
  136.       gRSBox[gRound].text = string(gRoundScore[gRound])
  137.       gBscreen = timeout("bscreen").new(800, #bscreen, me)
  138.     end if
  139.   end if
  140. end
  141.  
  142. on bscreen me
  143.   gBscreen.forget()
  144.   gDartCount = 0
  145.   gRound = gRound + 1
  146.   gDartScore = [0, 0, 0]
  147.   gCRBox.text = string(gRound)
  148.   repeat with i = 1 to 3
  149.     member("dart" && string(i)).text = "0"
  150.   end repeat
  151.   repeat with i = 1 to gDartList.count
  152.     sprite(gDartList[i]).cleanUp()
  153.   end repeat
  154.   repeat with i = 1 to gDartButtons.count
  155.     sprite(gDartButtons[i]).visible = 1
  156.   end repeat
  157.   repeat with i = 1 to gIB.count
  158.     sprite(gIB[i]).cleanUp()
  159.   end repeat
  160.   if gRound > 20 then
  161.     gameEnd()
  162.   end if
  163.   if gRound <= 20 then
  164.     pseudoList = []
  165.     repeat with i = 1 to gTargets.count
  166.       if sprite(gTargets[i]).pSector = gRound then
  167.         pseudoList.add(gTargets[i])
  168.       end if
  169.       if pseudoList.count = 4 then
  170.         exit repeat
  171.       end if
  172.     end repeat
  173.     blinkLikeTheDickens()
  174.   end if
  175. end
  176.  
  177. on gameEnd me
  178.   go("game over")
  179. end
  180.